/**
 * 在构造函数中使用泛型
 *  上一节是使用type规范类型  这节使用  interface 来规范类型
 *
 *  总之有了泛型 能让代码非常的优化的显示 还能有很好的语法提示
 *    唯一的不足就是 泛型有一定的学习成本  但是也不会难到哪里去
 */

{
  interface UserType {
    username: string;
    age: number;
  }

  class User<T> {
    public constructor(private _user: T) {}
    /**
     * 复习 构造函数的简写  是一个非常舒适的一个语法糖！！ 这里写的内容就相当于是
     *  class User{
     *    private _user:T
     *    constructor(user:T){
     *      this._user = user
     *    }
     *  }
     */
    get(): T {
      return this._user;
    }
  }

  let Jimmy = new User<UserType>({ username: "Jimmy", age: 22 });
  console.log(Jimmy.get());
}
